
dojo.provide("dojo.widget.Parse");dojo.require("dojo.widget.Manager");dojo.require("dojo.dom");dojo.widget.Parse=function(fragment){this.propertySetsList=[];this.fragment=fragment;this.createComponents=function(frag,parentComp){var comps=[];var built=false;try{if(frag&&frag.tagName&&(frag!=frag.nodeRef)){var djTags=dojo.widget.tags;var tna=String(frag.tagName).split(";");for(var x=0;x<tna.length;x++){var ltn=tna[x].replace(/^\s+|\s+$/g,"").toLowerCase();frag.tagName=ltn;var ret;if(djTags[ltn]){built=true;ret=djTags[ltn](frag,this,parentComp,frag.index);comps.push(ret);}else{if(ltn.indexOf(":")==-1){ltn="dojo:"+ltn;}
ret=dojo.widget.buildWidgetFromParseTree(ltn,frag,this,parentComp,frag.index);if(ret){built=true;comps.push(ret);}}}}}
catch(e){dojo.debug("dojo.widget.Parse: error:",e);}
if(!built){comps=comps.concat(this.createSubComponents(frag,parentComp));}
return comps;};this.createSubComponents=function(fragment,parentComp){var frag,comps=[];for(var item in fragment){frag=fragment[item];if(frag&&typeof frag=="object"&&(frag!=fragment.nodeRef)&&(frag!=fragment.tagName)&&(!dojo.dom.isNode(frag))){comps=comps.concat(this.createComponents(frag,parentComp));}}
return comps;};this.parsePropertySets=function(fragment){return[];};this.parseProperties=function(fragment){var properties={};for(var item in fragment){if((fragment[item]==fragment.tagName)||(fragment[item]==fragment.nodeRef)){}else{var frag=fragment[item];if(frag.tagName&&dojo.widget.tags[frag.tagName.toLowerCase()]){}else{if(frag[0]&&frag[0].value!=""&&frag[0].value!=null){try{if(item.toLowerCase()=="dataprovider"){var _this=this;this.getDataProvider(_this,frag[0].value);properties.dataProvider=this.dataProvider;}
properties[item]=frag[0].value;var nestedProperties=this.parseProperties(frag);for(var property in nestedProperties){properties[property]=nestedProperties[property];}}
catch(e){dojo.debug(e);}}}
switch(item.toLowerCase()){case"checked":case"disabled":if(typeof properties[item]!="boolean"){properties[item]=true;}
break;}}}
return properties;};this.getDataProvider=function(objRef,dataUrl){dojo.io.bind({url:dataUrl,load:function(type,evaldObj){if(type=="load"){objRef.dataProvider=evaldObj;}},mimetype:"text/javascript",sync:true});};this.getPropertySetById=function(propertySetId){for(var x=0;x<this.propertySetsList.length;x++){if(propertySetId==this.propertySetsList[x]["id"][0].value){return this.propertySetsList[x];}}
return"";};this.getPropertySetsByType=function(componentType){var propertySets=[];for(var x=0;x<this.propertySetsList.length;x++){var cpl=this.propertySetsList[x];var cpcc=cpl.componentClass||cpl.componentType||null;var propertySetId=this.propertySetsList[x]["id"][0].value;if(cpcc&&(propertySetId==cpcc[0].value)){propertySets.push(cpl);}}
return propertySets;};this.getPropertySets=function(fragment){var ppl="dojo:propertyproviderlist";var propertySets=[];var tagname=fragment.tagName;if(fragment[ppl]){var propertyProviderIds=fragment[ppl].value.split(" ");for(var propertySetId in propertyProviderIds){if((propertySetId.indexOf("..")==-1)&&(propertySetId.indexOf("://")==-1)){var propertySet=this.getPropertySetById(propertySetId);if(propertySet!=""){propertySets.push(propertySet);}}else{}}}
return this.getPropertySetsByType(tagname).concat(propertySets);};this.createComponentFromScript=function(nodeRef,componentName,properties,ns){properties.fastMixIn=true;var ltn=(ns||"dojo")+":"+componentName.toLowerCase();if(dojo.widget.tags[ltn]){return[dojo.widget.tags[ltn](properties,this,null,null,properties)];}
return[dojo.widget.buildWidgetFromParseTree(ltn,properties,this,null,null,properties)];};};dojo.widget._parser_collection={"dojo":new dojo.widget.Parse()};dojo.widget.getParser=function(name){if(!name){name="dojo";}
if(!this._parser_collection[name]){this._parser_collection[name]=new dojo.widget.Parse();}
return this._parser_collection[name];};dojo.widget.createWidget=function(name,props,refNode,position){var isNode=false;var isNameStr=(typeof name=="string");if(isNameStr){var pos=name.indexOf(":");var ns=(pos>-1)?name.substring(0,pos):"dojo";if(pos>-1){name=name.substring(pos+1);}
var lowerCaseName=name.toLowerCase();var namespacedName=ns+":"+lowerCaseName;isNode=(dojo.byId(name)&&!dojo.widget.tags[namespacedName]);}
if((arguments.length==1)&&(isNode||!isNameStr)){var xp=new dojo.xml.Parse();var tn=isNode?dojo.byId(name):name;return dojo.widget.getParser().createComponents(xp.parseElement(tn,null,true))[0];}
function fromScript(placeKeeperNode,name,props,ns){props[namespacedName]={dojotype:[{value:lowerCaseName}],nodeRef:placeKeeperNode,fastMixIn:true};props.ns=ns;return dojo.widget.getParser().createComponentFromScript(placeKeeperNode,name,props,ns);}
props=props||{};var notRef=false;var tn=null;var h=dojo.render.html.capable;if(h){tn=document.createElement("span");}
if(!refNode){notRef=true;refNode=tn;if(h){dojo.body().appendChild(refNode);}}else{if(position){dojo.dom.insertAtPosition(tn,refNode,position);}else{tn=refNode;}}
var widgetArray=fromScript(tn,name.toLowerCase(),props,ns);if((!widgetArray)||(!widgetArray[0])||(typeof widgetArray[0].widgetType=="undefined")){throw new Error("createWidget: Creation of \""+name+"\" widget failed.");}
try{if(notRef&&widgetArray[0].domNode.parentNode){widgetArray[0].domNode.parentNode.removeChild(widgetArray[0].domNode);}}
catch(e){dojo.debug(e);}
return widgetArray[0];};